I. Field
The present disclosure relates generally to electronics, and more specifically to techniques for performing 3-D clipping in a graphics processing unit (GPU).
II. Background
Graphics processing units (GPUs) are specialized hardware units used to render 2-dimensional (2-D) and/or 3-dimensional (3-D) images for various applications such as video games, graphics, computer-aided design (CAD), simulation and visualization tools, imaging, etc. A 3-D image may be modeled with surfaces, and each surface may be approximated with primitives. Primitives are basic geometry units and may include triangles, lines, etc. A GPU may perform various graphics operations such as transformation, rasterization, shading, blending, etc. to render a 3-D image. These graphics operations may be computationally intensive. Furthermore, the number of primitives used to represent the 3-D image may be large, e.g., in the millions. Much processing and memory resources may thus be consumed to perform computation on a large quantity of geometry data in order to render the 3-D image.
3-D clipping may be performed to identify and discard primitives that are not visible and thus do not need to be rendered Improved performance may be achieved by omitting computation for primitives that are discarded. However, 3-D clipping is itself a complex operation. A GPU may have dedicated hardware to perform all 3-D clipping operations. However, such dedicated 3-D clipping hardware would increase the cost and power consumption of the GPU, which may be undesirable for certain applications such as mobile and handheld devices. The use of dedicated 3-D clipping hardware may be avoided by performing 3-D clipping in software, which may be executed on a central processing unit (CPU), a digital signal processor (DSP), etc. However, performing 3-D clipping using a CPU or DSP, which is also used for other purposes, may raise other issues such as higher loading on a data bus used to transport primitive data and 3-D clipping results, synchronization between primitives sent out for 3-D clipping and other primitives to be rendered, etc.